package contratosonline.ejb;

import java.sql.Date;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import contratosonline.entity.Campus;
import contratosonline.entity.Contrato;
import contratosonline.entity.FiscalContrato;
import contratosonline.entity.LicitacaoOrigem;
import contratosonline.entity.Setor;
import contratosonline.entity.TermoAditivo;
import contratosonline.entity.VigenciaContratos;
import contratosonline.ejb.controller.*;

/**
 * Session Bean implementation class ControllerEJBFacade
 */
@Stateless
public class ControllerEJBFacade implements ControllerEJBFacadeLocal {
	@EJB
	private CampusJPAControllerLocal campusJPA;
	@EJB
	private ContratoJPAControllerLocal contratoJPA;
	@EJB
	private FiscalJPAControllerLocal fiscalJPA;
	@EJB
	private LicitacaoOrigemJPAControllerLocal licitacaoOrigemJPA;
	@EJB
	private SetorJPAControllerLocal setorJPA;
	@EJB
	private TermoAditivoJPAControllerLocal termoJPA;
	@EJB
	private VigenciaContratoJPAControllerLocal vigenciaContratoJPA;
    /**
     * Default constructor. 
     */
	public ControllerEJBFacade() {
		super();
	}
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.Campus)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.Campus)
	 */
    public void persiste(Campus c){
    	campusJPA.persiste(c);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.Contrato)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.Contrato)
	 */
    public void persiste(Contrato c){
    	contratoJPA.persiste(c);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.FiscalContrato)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.FiscalContrato)
	 */
    public void persiste(FiscalContrato f){
    	fiscalJPA.persiste(f);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.LicitacaoOrigem)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.LicitacaoOrigem)
	 */
    public void persiste(LicitacaoOrigem l){
    	licitacaoOrigemJPA.persiste(l);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.Setor)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.Setor)
	 */
    public void persiste(Setor s){
    	setorJPA.persiste(s);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.TermoAditivo)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#persiste(contratosonline.entity.TermoAditivo)
	 */
    public void persiste(TermoAditivo t){
    	termoJPA.persiste(t);
    }
    
    
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.Campus)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.Campus)
	 */
    public void altera(Campus c)throws Exception{
    	campusJPA.altera(c);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.Contrato)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.Contrato)
	 */
    public void altera(Contrato c)throws Exception{
    	contratoJPA.altera(c);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.FiscalContrato)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.FiscalContrato)
	 */
    public void altera(FiscalContrato f)throws Exception{
    	fiscalJPA.altera(f);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.LicitacaoOrigem)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.LicitacaoOrigem)
	 */
    public void altera(LicitacaoOrigem l)throws Exception{
    	licitacaoOrigemJPA.altera(l);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.Setor)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.Setor)
	 */
    public void altera(Setor s)throws Exception{
    	setorJPA.altera(s);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.TermoAditivo)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#altera(contratosonline.entity.TermoAditivo)
	 */
    public void altera(TermoAditivo t) throws Exception{
    	termoJPA.altera(t);
    }
    
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.Campus)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.Campus)
	 */
    public void exclui(Campus c)throws Exception{
    	campusJPA.exclui(c.getIdCampus());
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.Contrato)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.Contrato)
	 */
    public void exclui(Contrato c)throws Exception{
    	contratoJPA.exclui(c.getIdcontrato());
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.FiscalContrato)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.FiscalContrato)
	 */
    public void exclui(FiscalContrato f)throws Exception{
    	fiscalJPA.exclui(f.getIdFiscalContrato());
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.LicitacaoOrigem)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.LicitacaoOrigem)
	 */
    public void exclui(LicitacaoOrigem l)throws Exception{
    	licitacaoOrigemJPA.exclui(l.getIdlicitacaoOrigem());
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.Setor)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.Setor)
	 */
    public void exclui(Setor s)throws Exception{
    	setorJPA.exclui(s.getIdSetor());
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.TermoAditivo)
	 */
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#exclui(contratosonline.entity.TermoAditivo)
	 */
    public void exclui(TermoAditivo t) throws Exception{
    	termoJPA.exclui(t.getIdTermoAditivo());
    }

    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#findCampusByName(java.lang.String)
	 */
    public List<Campus> findCampusByName(String nomeCampus){
    	return campusJPA.findCampusByName(nomeCampus);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#findContratoByNumeroAno(java.lang.String, java.lang.String)
	 */
    public List<Contrato> findContratoByNumeroAno(String num, String ano) {
    	return contratoJPA.findContratoByNumeroAno(num, ano);
    }
    
    /* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#findVigenciaContratoAll()
	 */
    public List<VigenciaContratos> findVigenciaContratoAll(){
    	return vigenciaContratoJPA.findVigenciaContratoAll();
    }
    
	/* (non-Javadoc)
	 * @see contratosonline.ejb.ControllerEJBFacadeLocal#findVigenciaContratoNoPeriodo(java.sql.Date, java.sql.Date)
	 */
	public List<VigenciaContratos> findVigenciaContratoNoPeriodo(Date dataInicio, Date dataFim){
		return vigenciaContratoJPA.findVigenciaContratoNoPeriodo(dataInicio, dataFim);
	}
	
	public List<TermoAditivo> findTermoAditivoByContrato(String numeroContrato, String anoContrato){
		List<Contrato> listaContratosEncontrados = findContratoByNumeroAno(numeroContrato, anoContrato);
		if (listaContratosEncontrados==null||listaContratosEncontrados.isEmpty()) {
			return null;
		}
		Contrato contrato = listaContratosEncontrados.get(0);
		if (contrato==null) {
			return null;
		}
		return termoJPA.findTermoaditivoByContrato(contrato.getIdcontrato());
	}
	
	public TermoAditivo findTermoAditivoByContratoTermo(String numeroContrato, String anoContrato,Integer termoNumero){
		List<Contrato> listaContratosEncontrados = findContratoByNumeroAno(numeroContrato, anoContrato);
		if (listaContratosEncontrados==null||listaContratosEncontrados.isEmpty()) {
			return null;
		}
		Contrato contrato = listaContratosEncontrados.get(0);
		if (contrato==null) {
			return null;
		}
		return termoJPA.findTermoaditivoByContrato(termoNumero, contrato.getIdcontrato());
	}

    
}
